package Shifu.MainServer.Net;

import java.rmi.Remote;
import java.rmi.RemoteException;
import Shifu.MainServer.Management.*;

/**
 * Interfaccia per il MainServer
 * per peers di tipo Leecher
 */

public interface Leecher extends Remote {


	/**
	 * Restituisce un file del sistema richiesto
	 * @param index indice del file richiesto
	 * @return il file più il suo descrittore
	 * @exception RemoteException nel caso ci siano problemi di connessioni	
	 */

	public MergedFile getFile(int index) throws RemoteException;

	
	/**
	 * Aggiunge un peer al sistema
	 * @param stub lo stub del peer
	 * @param username dell'utente
	 * @return l'id che il client usera
	 * @exception RemoteException nel caso ci siano problemi di connessioni
	 */

	public int add(Remote stub,String username) throws RemoteException;



	/**
	 * Restituisce la lista dei file presenti sul sistema
	 * @return il file richiesto
	 * @exception RemoteException nel caso ci siano problemi di connessioni
	 */

	public String getFileList() throws RemoteException;


	/**
         * Resitituisce l'elenco dei Peer connessi al sistema
	 * @return elenco dei peer connessi
	 * @exception RemoteException nel caso ci siano problemi di connessioni
	 */

	public String getPeerList() throws RemoteException;


}
